#ifndef __LIBOPEN_SSL_H__
#define __LIBOPEN_SSL_H__
#include <string>

#include <openssl/rsa.h>
#include <openssl/pem.h>
#include <openssl/md5.h>
#include <openssl/aes.h>

#ifdef _WIN32
#else
#include <memory.h>
#endif
namespace bm {
int make_RSA_key(const std::string& privatePath, const std::string& publicPath, int bits);
int encrypt_RSA(const std::string& from, std::string& to, const std::string& keyPath, bool isPublic);
int decrypt_RSA(const std::string& from, std::string& to, const std::string& keyPath, bool isPublic);
int encrypt_base64(const std::string& from, std::string& to, bool newLine);
int decrypt_base64(const std::string& from, std::string& to, bool newLine);
int md5(const std::string& from, std::string& to);

int encrypt_aes(const std::string& from, std::string& to, const std::string& key);
int decrypt_aes(const std::string& from, std::string& to, const std::string& key);
int encrypt_aes_cbc(const std::string& from, std::string& to, const std::string& key);
int decrypt_aes_cbc(const std::string& from, std::string &to, const std::string& key);

}
#endif
